import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_html/flutter_html.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:hf_enjoy/utils/eventbus.dart';
import 'package:hf_enjoy/utils/http.dart';
import 'package:hf_enjoy/utils/toast.dart';
import 'package:image_picker/image_picker.dart';

class ProfilePage extends StatefulWidget {
  ProfilePage({super.key,required this.userInfo});

  Map userInfo;

  @override
  State<ProfilePage> createState() => _ProfilePageState();
}

class _ProfilePageState extends State<ProfilePage> {

   Map userInfo = {
    "avatar": null,
    "nickName": null,
  };
  final TextEditingController _avatarController = TextEditingController();
  @override
    void initState() {
      // TODO: implement initState
      super.initState();
      setState(() {
         userInfo = widget.userInfo;
        _avatarController.text = userInfo['nickName']??"";
      });

    }

    //更新呢称
    updateNickName() async{
      if (_avatarController.text.isEmpty) return ToastUtil.showError("昵称不能为空");
      try {
        await http.put('/userInfo',{"nickName":_avatarController.text});
        setState(() {
          userInfo['nickName'] = _avatarController.text;
          ToastUtil.showSuccess("修改成功");
        });
      } catch (e) {
        return ToastUtil.showError("网络异常");
      }
      
    }

    //显示半模态
    void showSheet(){
      showModalBottomSheet(
        context: context, 
        builder: (context){
          return SizedBox(
            height: 200,
            child: Column(children: [
              ListTile(
                leading: const Icon(Icons.camera_alt),
                title: const Text("拍照"),
                onTap: () {
                  uploadAvatar("camera");
                },
              ),
              ListTile(
                leading: const Icon(Icons.image),
                title: const Text("相册"),
                onTap: () {
                  uploadAvatar("gallery");
                },
              ),
            ],),
          );
        }
      );
    }
    //选择图片
    void uploadAvatar(String imageType)async{
      ImagePicker picker = ImagePicker();
        if (imageType == "camera") {
         final file = await picker.pickImage(source:ImageSource.camera);
         if (file!=null) {
           upload(file.path);
         }
        } else if(imageType== "gallery") {
           final file = await picker.pickImage(source:ImageSource.gallery);
           if (file!=null) {
            upload(file.path);
         }
        }
    }
    //上传
    void upload(String path)async{
      try{
        ToastUtil.showSuccess(path);
        FormData formData = FormData.fromMap({
          "file":await MultipartFile.fromFile(path),
          "type":"avatar",
        });
        var res = await http.post("/upload",formData);
        if(res['code']!=10000) return ToastUtil.showError("上传图片失败!");
        setState(() {
          userInfo['avatar'] = res['data']['url'];
        });
      }finally{
        Navigator.pop(context);
      }
    }


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      appBar: AppBar(
        title: const Text('个人信息'),
        backgroundColor: Colors.transparent,
        centerTitle: true,
        leading: IconButton(
          onPressed: (){
            eventBus.fire(BackMine());
            Navigator.pop(context);
          }, icon: const Icon(Icons.arrow_back)),
      ),
      body: ListView(
        padding: const EdgeInsets.all(10),
        children: [
          SizedBox(
            height: 40,
            child: Row(
              children: [
                const Text('头像', style: TextStyle(fontSize: 16)),
                const Spacer(),
                Row(
                  children: [
                    GestureDetector(
                      onTap:(){
                          showSheet();
                      },
                      child: ClipRRect(
                        borderRadius: BorderRadius.circular(50.0),
                        child: userInfo['avatar']!=null?Image.network(userInfo['avatar'],width: 30,height: 30): 
                        Image.asset('images/avatar_1.jpg',width: 30, height: 30)
                        ),
                    ),
                    const Icon(Icons.arrow_forward_ios, size: 12)
                  ],
                )
              ],
            ),
          ),
          Row(
            children: [
              const Text('昵称'),
              const Spacer(),
              Expanded(
                child: TextField(
                  controller: _avatarController,
                  decoration: const InputDecoration(
                      hintText: '请输入昵称', border: InputBorder.none),
                  textAlign: TextAlign.right,
                  onEditingComplete: (){
                    updateNickName();
                  },
                ),
              ),
              const Icon(Icons.arrow_forward_ios, size: 12)
            ],
          )
        ],
      ),
    );
  }
}